package middleware

import (
	"github.com/gin-gonic/gin"
	gindump "github.com/tpkeeper/gin-dump"
)

// Middlewares 存储已注册的中间件。
var Middlewares = defaultMiddlewares()

// defaultMiddlewares 返回一个包含默认中间件的 map。
func defaultMiddlewares() map[string]gin.HandlerFunc {
	return map[string]gin.HandlerFunc{
		// 恢复中间件，用于处理 panic 并返回 500 错误
		"recovery": gin.Recovery(),
		// 安全中间件，添加安全相关的响应头
		"secure": Secure(),
		// OPTIONS 请求处理中间件
		"options": Options(),
		// 无缓存中间件，防止客户端缓存响应
		"nocache": NoCache(),
		// 跨域中间件
		"cors": Cors(),
		// 请求 ID 中间件，为每个请求添加唯一的请求 ID
		"requestid": RequestID(),
		// 日志中间件，记录请求日志
		"logger": Logger(),
		// 请求信息打印中间件
		"dump": gindump.Dump(),
	}
}
